namespace SPDeploy.Library.Interfaces
{
    using System;
    using Helpers;
    using Processing.Library;

    public interface IDeploymentTargetProcessor<TData, TReturn> : IDeploymentTargetProcessor
    {
        #region Methods: public

        TReturn Install(ProcessorContext ctx, TData config);
        TReturn Uninstall(ProcessorContext ctx, TData config);
        TReturn Update(ProcessorContext ctx, TData oldConfig, TData newConfig);

        #endregion
    }

    public interface IDeploymentTargetProcessor
    {
        #region Methods: public

        ILogWriter LogWriter { set; }
        bool CanProcess(Type t);
        string Name { get; }

        #endregion
    }
}